package negocio;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

public class DataHora {

	public static final SimpleDateFormat FORMAT = new SimpleDateFormat(   
    "dd/MM/yyyy HH:mm");

	static {   
	FORMAT.setLenient(false);   
	}

	public int dia, mes, ano, hora, minuto;
	
/**=====================================
 * METODO CONSTRUTOR que recebe a 
 * data e hora do sistema
 =======================================*/	
	
	public DataHora() {
		GregorianCalendar cal = new GregorianCalendar();
		dia = cal.get(GregorianCalendar.DAY_OF_MONTH);
		mes = cal.get(GregorianCalendar.MONTH) + 1;
		ano = cal.get(GregorianCalendar.YEAR);
		hora = cal.get(GregorianCalendar.HOUR_OF_DAY);
		minuto = cal.get(GregorianCalendar.MINUTE);
	}
	
/**====================================
 * CONSTRUTOR que recebe uma String
 ====================================*/	
	public DataHora(String dataHora) throws MyException{
		
		try {
			if(dataHora.trim().length() == 16){
				String[] dados = dataHora.split("/");
				//FORMAT.parse(dataHora);
					dia = Integer.parseInt(dados[0].trim());
					mes = Integer.parseInt(dados[1].trim());
					ano = Integer.parseInt(dados[2].trim());
					hora = Integer.parseInt(dados[3].trim());
					minuto = Integer.parseInt(dados[4].trim());
					dataHora = geraStringFormatada();
					FORMAT.parse(dataHora);
			}else
				throw new MyException("Data ou hora Invalida!");
		}catch (ParseException e){
			throw new MyException("Data ou hora Invalida!");
		}
	}
	
/**=====================================================
 * METODO geraString
 *	Retorna um string contendo a data 
 *	armazenada no objeto no formato "DD/MM/AAAA HH:Min".
 ======================================================*/
	
	public String geraStringFormatada() {
		return String.format("%02d/%02d/%04d %02d:%02d", dia, mes, ano, hora, minuto);
	}
	
/**======================================================
 * METODO geraStringBarras
 *	Retorna um string contendo a data
 *	armazenada no objeto no formato "DD/MM/AAAA/HH/Min".
 =======================================================*/
	
	public String geraStringBarras(){
		return String.format("%02d/%02d/%04d/%02d/%02d", dia, mes, ano, hora, minuto);
	
	}
	
/**=================================================
	public String geraStringBanco(){
		return String.format("%04d-%02d-%02d %02d:%02d:00", ano, mes, dia, hora, minuto);
	}
==================================================*/
	
	public String soData(){
		return String.format("%02d/%02d/%04d", dia, mes, ano);
	}
}
